dot_product_3d_normalised

语法:

dot_product_3d_normalised(x1, y1, z1, x2, y2, z2)


参数 描述
x1 第一个向量的x坐标。
y1 第一个向量的y坐标。
z1 第一个向量的z坐标。
x2 第二个向量的x坐标。
y2 第二个向量的y坐标。
z2 第二个向量的z坐标。


返回: Real(实数)


描述

点积是一个表示两个向量之间角关系的值,先把两个向量相乘,然后把结果相加得到。名称 "点积" 是从中心点 "·"产生,通常用于指定此操作 (另一个可替代名称 "标量积" 强调标量, 而不是矢量性质的结果)。

数学公式如下:


在二维平面中, a[x1,y1]和b[x2,2] 的点积就是 x1x2 + y1y2,但在三维中,向量a[x1,y1,z1]和b[x1,b1,z1]的点积是x1x2+y1y2 + z1z3。即, GameMaker Studio 2 中的三维点积计算公式:

a · b = (x1*x2) + (y1*y2) + (z1*z2);

单位化 点积是什么?对单位点积的修正方式使返回值进入-1 和-1 的范围 (有关更详细的信息, 请参阅单位向量) , 这在许多情况下特别有用, 特别是在处理照明和其他3d 功能。


例如:

var x1, y1, x2, y2;
x1 = 0;
y1 = 1;
z1 = 0;
x2 = o_Player.x - x;
y2 = o_Player.y - y;
z2 = o_Player.z - z;
if dot_product_3d_normalised(x1, y1, z1, x2, y2, z2) > 0 above=true else above=false;

上面的代码创建了一个沿着y轴的单位向量,然后获取玩家对象 "o _ player"的向量 。最后, 它计算这两个向量的点积, 如果它是大于0, 它将变量 "above" 设置为 true, 如果它小于或等于 0, 它将其设置为 "false "。